/*
 * Copyright 2012, Google Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *    * Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *    * Redistributions in binary form must reproduce the above
 *      copyright notice, this list of conditions and the following
 *      disclaimer in the documentation and/or other materials provided
 *      with the distribution.
 *    * Neither the name of Google Inc. nor the names of its
 *      contributors may be used to endorse or promote products derived
 *      from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <setjmp.h>

#include "cmockery.h"

#include "mosys/log.h"
#include "mosys/platform.h"

const char *test_ids[] = {
	"TEST",
	NULL,
};

struct platform_op test_ops;
struct platform_cb test_cbs;

struct platform_intf test_intf = {
	.type 		= PLATFORM_DEFAULT,
	.name 		= "UNITTEST",
	.id_list 	= test_ids,
	.op		= &test_ops,
	.cb		= &test_cbs,
};

int main(int argc, char **argv)
{
	int rc = 0;
	struct platform_intf *intf = &test_intf;

	mosys_globals_init();
	mosys_set_root_prefix(UNITTEST_DATA);

	rc |= file_unittest(intf);
	rc |= math_unittest();
	rc |= io_unittest(intf);

	if (rc == 0)
		fprintf(stdout, "Unit tests passed.\n");
	else
		fprintf(stdout, "Unit tests failed.\n");

	return rc;
}
